//package com.example.product.config;
//
//import lombok.Data;
//import org.springframework.boot.context.properties.ConfigurationProperties;
//import org.springframework.boot.context.properties.EnableConfigurationProperties;
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
//import com.example.product.config.MyThreadConfig.ThreadPoolConfigProperties;
//
//import java.util.concurrent.Executors;
//import java.util.concurrent.LinkedBlockingDeque;
//import java.util.concurrent.ThreadPoolExecutor;
//import java.util.concurrent.TimeUnit;
//
//@EnableConfigurationProperties(ThreadPoolConfigProperties.class)
//@Configuration
//public class MyThreadConfig {
//    @Bean
//    public ThreadPoolExecutor threadPoolExecutor(ThreadPoolConfigProperties pool) {
//        return new ThreadPoolExecutor(
//                pool.getCoreSize(),
//                pool.getMaxSize(),
//                pool.getKeepAliveTime(),
//                TimeUnit.SECONDS,
//                new LinkedBlockingDeque<>(100000),
//                Executors.defaultThreadFactory(),
//                new ThreadPoolExecutor.CallerRunsPolicy()
//        );
//    }
//
//    @ConfigurationProperties(prefix = "thread")
//    @Data
//    public class ThreadPoolConfigProperties {
//        private Integer coreSize;
//        private Integer maxSize;
//        private Integer keepAliveTime;
//    }
//}
//
